Skip to content

fix(registry): latest now means default branch HEAD, not newest tag#157

Merged
jrob5756 merged 1 commit intomainfrom
fix/registry-default-branch
May 6, 2026
Merged

fix(registry): latest now means default branch HEAD, not newest tag#157
jrob5756 merged 1 commit intomainfrom
fix/registry-default-branch

Conversation

@jrob5756
Copy link
Copy Markdown
Collaborator

@jrob5756 jrob5756 commented May 6, 2026

Summary

Changes the default ref resolution for workflow registries: a bare `name@registry` reference now always resolves to the default branch HEAD, instead of the newest git tag.

Why

The previous behavior was surprising. As soon as a registry repo had a single tag, bare references silently froze at that tag and stopped picking up commits to `main`. A user pushing to their registry's main branch and running `conductor registry update` would see no change — because `latest` had quietly switched from "newest commit" to "newest tag" the moment the first tag was created.

The new model matches what most users expect from a development-time tool:

Reference Resolves to
`qa-bot` default registry, default branch HEAD
`qa-bot#latest` same as above
`qa-bot#v1.2.3` explicit tag
`qa-bot#main` explicit branch
`qa-bot#abc123` explicit commit SHA

Tags are still first-class refs — pin explicitly when you want a release.

Impact

  • One fewer GitHub API call on the hot path of bare-name fetches (no more `list_tags`).
  • Tag listing is still used for the "Latest tags:" display in `registry list`/`show`.
  • Branch HEAD is still re-resolved to a fresh commit SHA on every fetch, so cache invalidation is automatic.

Tests

  • Updated tests in `test_version_resolver.py` to match the new semantics.
  • Full suite: 2379 passed, 9 skipped.
  • Ruff lint + format clean.

Previously, when no `#<ref>` was given, conductor resolved `latest` to
the newest semver-sorted git tag if any tags existed, falling back to
the default branch only when no tags existed. This was surprising:
once a registry had a single tag, bare `name@registry` references
silently froze at that tag and stopped picking up commits to main.

New semantics:
  * No ref / `#latest` -> default branch HEAD (always)
  * Explicit `#<ref>` -> use that ref verbatim (tag, branch, or SHA)

Pin to a tagged release explicitly with `name@registry#v1.2.3`.

Tag listing is still used for the 'Latest tags:' display in
`registry list`/`show`, just not for default ref resolution. This
also removes one GitHub API call from the hot path of bare-name
fetches.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jrob5756 jrob5756 merged commit f39b70a into main May 6, 2026
2 checks passed
@jrob5756 jrob5756 deleted the fix/registry-default-branch branch May 6, 2026 02:27
@jrob5756 jrob5756 mentioned this pull request May 6, 2026
jrob5756 added a commit that referenced this pull request May 6, 2026
- conductor resume flag parity with run (#158)
- reasoning effort displayed in dashboard (#160)
- iteration_limit_reached/resolved events for dashboard (#162)
- registry latest now means default branch HEAD, not newest tag (#157)
- forbid extra fields on Agent/Parallel/ForEach/Workflow schemas (#159)
- pretty-print tool args/results in dashboard events (#161)
- capture uv stdout+stderr on Windows install failure (#156)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant